import path from 'node:path'
import { cwd } from 'node:process'
import uni from '@dcloudio/vite-plugin-uni'
import { defineConfig, loadEnv } from 'vite'

const envDir = 'env'

export default defineConfig(async ({ mode }) => {
  const env = loadEnv(mode, path.join(cwd(), envDir), '') // 如果传入空字符串 ''，它会加载所有环境变量，而不仅仅是 VITE_ 开头的变量

  const UnoCSS = (await import('unocss/vite')).default

  return {
    // 自定义环境配置文件目录
    envDir,
    // 定义全局类型
    define: {
      // 类型在 src/types/global.d.ts

      /** Uniapp 平台 */
      UNI_PLATFORM: JSON.stringify(env.UNI_PLATFORM), // 将 node 环境里的 UNI_PLATFORM 赋值给运行时全局的 UNI_PLATFORM
      /** 是否开发模式 */
      INDEV: env.NODE_ENV === 'development', // 是否开发模式
      /** 商户平台 */
      PRODUCT_ENV: JSON.stringify(env.PRODUCT_ENV), // 产品（小东租、铨鑫、蜗盒、...）的小写拼音，从环境配置文件名中提取
      /** 主题 */
      THEME: JSON.stringify(env.X_THEME), // yellow, blue...
    },
    resolve: {
      alias: {
        '@': path.join(__dirname, './src'),
      },
    },
    plugins: [
      uni(),
      UnoCSS(),
    ],
    server: {
      // host: '127.0.0.1',
      port: 10106,
      proxy: {
        '/bs-api': {
          target: env.VITE_BASE_URL,
          changeOrigin: true,
          rewrite: path => path.replace(/^\/bs-api/, ''),
        },
      },
    },
    css: {
      preprocessorOptions: {
        scss: {
          silenceDeprecations: ['legacy-js-api'],
        },
      },
    },
  }
})
